
正文
c调用linux命令行 linux执行c语言命令
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
我想在linux下写一个c程序调用linux的可执行文件或者程序,怎么做
Linux C编程中,调用另一个可执行文件或调用命令用system函数最简单了,这个函数原理是在你编写的那个程序的内部启动另一个程序或命令,从而创建一个新进程,并等待这个进程执行完毕退出。如果正常执行,system函数将返回被执行程序或命令的退出码;如果无法运行这个程序或命令,将返回错误代码127;如果是其他错误,返回-1。这个函数的原型是:
#include stdlib.h
int system(const char *string);
参数string是将要执行的程序文件名或路径,如果是启动一个命令就是一个命令字符串。
还有一种执行外部程序的方法是exec系列函数,一般是在fork的子进程里面调用exec系列函数,那主进程里直接调用exec系列不行吗,为什么要fork再在子进程里调用呢?因为exec系列的函数(包括execl函数)是将当前进程替换成新进程,这里的当前进程就是你编写的程序,也就是说新进程启动后调用exec函数的进程就不存在了,所以exec系列函数调用之后的代码就不会再执行了。如果你不放在fork子进程里面,那你编写的程序的主进程在执行execl函数后就完全不存在了,所以exec系列函数的使用都是先fork然后在子进程里面调用。因为exec系列函数都要使用fork调用,所以我一般是用system函数。
相关问答
Q1: linux下怎样用c语言调用shell命令
//使用popen()函数和pclose()函数,具体使用示例如下:
FILE *fp;
char cmd[]="ls -l"; //以ls -l命令为例
char buf[1024];
if((fp=popen(cmd,"r")) == NULL)
{
printf("popen() failed:%s",strerror(errno));
return -1;
}
fread(buf,1,sizeof(buf),fp); //将fp数据流读取到buf中
printf("%s\n",buf); //在屏幕中显示ls -l的执行结果
pclose(fp); //关闭文件流fp
这里我只是写了最核心的代码,希望对你有所帮助。
Q2: 如何在自己写的 Linux C 程序中以一种优雅的方式调用一些命令
Linux C编程启动另一个可执行文件或调用命令用system函数最理想了,这个函数原理是在你编写的那个程序的内部启动另一个程序或命令,从而创建一个新进程,并等待这个进程执行完毕退出。如果正常执行,system函数将返回被执行程序或命令的退出码;如果无法运行这个程序或命令,将返回错误代码127;如果是其他错误,返回-1。这个函数的原型是:
#include stdlib.h
int system(const char *string);
参数string是将要执行的程序或命令的命令字符串。
还有一种执行外部程序的方法是exec系列函数,但这个系列的函数都是将当前进程的替换成新进程,也就是说新进程启动后原来的进程就不存在了,exec系列函数后面的那些代码就不会再执行了。所以我一般是用system函数调用Linux命令。
Q3: 如何在objective-c中调用linux命令
可以 直接执行命令
void runls()
{
[[NSTask launchedTaskWithLaunchPath:@"/bin/ls"
arguments:[NSArray array]] waitUntilExit];
}
或者 启动sh执行命令。
void runSystemCommand(NSString *cmd)
{
[[NSTask launchedTaskWithLaunchPath:@"/bin/sh"
arguments:[NSArray arrayWithObjects:@"-c", cmd, nil]]
waitUntilExit];
Q4: 如何在C语言编程中调用linux系统终端下的命令
用system函数
如system(“ls -l”);
就是程序执行ls -l系统调用
c调用linux命令行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux执行c语言命令、c调用linux命令行的信息别忘了在本站进行查找喔。








