Linux C中,如何知道system函数是否调用成功了?

如题所述

函数说明
system()会调用fork()产生子进程,由子进程来调用/bin/sh -c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。

返回值
=-1: 出现错误
=0: 调用成功但是没有出现子进程
>0: 成功退出的子进程的id
如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。
若参数string为空指针(NULL),则返回非零值。
如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno来确认执行成功。

检查返回值:
int ret = system("ls -al /etc/passwd /etc/shadow");
if(WIFSIGNALED(ret))
......追问

能否给段代码说明是否返回成功.如如何知道system("mount dir1 dir2")这函数是否调用成功?谢谢!

追答

WIFSIGNALED(ret) 子进程正常退出(调用成功)的情况下此宏值为真
伪代码:
int ret = system("mount dir1 dir2");
if(WIFSIGNALED(ret))
;正常退出;
else
;异常退出;

温馨提示:内容为网友见解,仅供参考
无其他回答

linux 怎么得到system调用返回值
函数说明 system()会调用fork()产生子进程,由子进程来调用\/bin\/sh -c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。 返回值 =-1: 出现错误 =0: 调用成功但是没有出现子进程 >0: 成功退出的子进程的id 如果s...

Linux system 函数
答案是 都错 man手册 看着挺晕的,但是如果对于 system 的执行过程了解的话,就很容易理解了,函数执行分为以下几个阶段。 阶段1:创建子进程等准备工作。如果失败,返回-1 阶段2:调用 \/bin\/sh 拉起脚本,如果拉起失败或者shell未正常执行,原因值被写入ret中 阶段3:如果 shell 脚本执行成功,...

Linux下的system函数应该这样用
在项目中,推荐的system调用封装如下:在调用system前,首先将SIGCHLD信号的处理设为默认忽略:old_handler = signal(SIGCHLD, SIG_DFL);然后执行system函数:system(...);调用结束后,恢复原始信号处理函数:signal(SIGCHLD, old_handler);

C语言 如何调用另一个程序的计算结果?急!!!
在DOS下,system()只是做一个调用其他程序的工作,只要调用成功就返回0,不成功就返回-1。它不能得到被调用的程序的执行结果。要得到其他程序的执行的结果,要用spawn***()这个家族的函数。如果在linux下面 如果你想得到那个返回值可以调用WEXITSTATUS(status),其中status是system函数的返回值。如果你...

Linux C语言用system()调用,带参数
int system(const char * string);函数说明 system()会调用fork()产生子进程,由子进程来调用\/bin\/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。返回值 =-1:出现错误 =0:调用成功但是没...

宏伟精讲·linux system()函数完全解密
Linux System()函数详解System()函数在Linux中扮演着执行外部命令的角色,其基本功能包括头文件包含、执行流程和返回值处理。让我们深入剖析。首先,要理解system()的基本用法,如包含头文件:#include 函数原型明确,其流程是创建子进程并执行指定命令,接着父进程等待子进程完成。测试代码揭示了几个关键情况...

c语言清屏函数system怎么用
编写完整代码如下:c#include int main (int argc, char *argv[]) { system("clear"); \/\/ 或者 system("cls"); return 0;}保存文件后,选择"运行"选项,点击编译。如果编译成功,控制台将清空。通过这些步骤,你已经成功利用C语言的system函数实现了清屏功能。记得根据你的操作系统选择合适...

linux项目上如何查看项目中的运行状态?
以openat()系统调用为例,使用BCC开发的eBPF程序可以实现跟踪功能。该程序通过创建BPF映射存储数据、编写用户态Python程序与内核交互,最终执行程序实现跟踪目标。eBPF开发可以使用BCC、bpftrace或libbpf等工具,每种方法有其特定优势和适用场景。选择开发方式时需考虑内核版本、配置、程序复杂度、是否允许安装内核...

我想在linux下写一个c程序调用linux的可执行文件或者程序,怎么做...
Linux C编程中,调用另一个可执行文件或调用命令用system函数最简单了,这个函数原理是在你编写的那个程序的内部启动另一个程序或命令,从而创建一个新进程,并等待这个进程执行完毕退出。如果正常执行,system函数将返回被执行程序或命令的退出码;如果无法运行这个程序或命令,将返回错误代码127;如果是其他...

system在c语言中是什么意思
system是一个重要的C语言函数,其主要功能是执行外部程序或命令。这个函数通常在标准库中的stdlib.h中定义。通过system函数,开发人员可以调用操作系统的命令行工具,从而实现一些高级功能。比如,system("cls")就是在Windows系统中清屏的一个具体应用。这里,“cls”是一个在DOS和Windows命令行中常用的清屏...

相似回答