有没有办法在 C 的 system() 函数中将两个 Linux 命令组合在一起?
Is there a way club two Linux command together in system() function in C?
我想执行 who 命令和 cut 像 who | 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"
.
我想执行 who 命令和 cut 像 who | 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"
.