有没有办法在 C 的 system() 函数中将两个 Linux 命令组合在一起?

Is there a way club two Linux command together in system() function in C?

我想执行 who 命令和 cutwho | cut -d " " -f 1,21,23 这样需要的信息但是通过使用 system() c.

中的函数

我试过 system("who | cut -d " " -f 1,21,23") 但没有用。

代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define ErrorBC -69
int main(int argc, char* argv[]){
    if(argc < 2){
        printf("No arguments passed\n");
        return -69;
    }
    else{
        int i=0;
        for(i=1;i<argc;i++){
        if((strcmp("kernel",argv[i]))==0){
            system("uname -s -r");
        }
        else if(((strcmp("ulog",argv[i]))==0)){
                system("who | cut -d " " -f 1,21,23");
        }
        else{
            printf("%s is not a valid options\n",argv[i]);
        }
    }
    }
}

输出:

c99 test.c
/usr/sahil: ./a.out ulog
Usage: cut {-b <list> [-n] | -c <list> | -f <list> [-d <char>] [-s]} file ...

对于 "who | cut -d " " -f 1,21,23",您有 两个 字符串:"who | cut -d "" -f 1,21,23"。它们连接到 "who | cut -d -f 1,21,23".

要在 C 字符串中包含双引号,您需要使用反斜杠 转义 它们:"who | cut -d \" \" -f 1,21,23".