[英]Output of the Linux System Call in C program
我想在我的C程序中操纵ls -al命令的输出。 有办法吗?
int main()
{
int return_value;
return_value = system("ls -al ");
return return_value;
}
您需要通向过程的管道。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
char output[1024];
fp = popen("/bin/ls -al", "r");
if (fp == NULL)
exit(1);
while (fgets(output, 1023, fp) != NULL)
printf("%s", output);
pclose(fp);
return 0;
}
您可以在/bin/ls
上使用popen(3) ,如Baris Demiray所回答 。
但是在特定情况下(在目录中获取文件),您实际上并不需要启动一些运行ls
外部进程,只需使用opendir(3)和readdir(3)即可读取目录条目,并使用stat (2)在每一个上(您将使用snprintf(3)构建路径)。 另请参见glob(7) , nftw(3)并阅读Advanced Linux Programming
请注意, system(3)是一个名称很差的标准C库函数。 它不是直接的系统调用 (它们在syscalls(2)中列出...),但是使用fork(2) , execve(2) , waitpid(2)等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.