繁体   English   中英

C程序中Linux系统调用的输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM