I am LAZY bones ? all linux

C中调用shell命令的方法 popen演示

以下是 popen.c

#include <stdio.h>
int main(){
        FILE * fp;
        char str[1024];
        if(NULL==(fp=popen("pwd","r"))){
                return -1;
        }else{
                printf("%s",fgets(str,1023,fp));
                pclose(fp);
        }
        return 0;
}

编译运行的结果:

lily@LLY:~/test$ gcc popen.c
lily@LLY:~/test$ ./a.out
/home/lily/test
lily@LLY:~/test$

另如果只是要执行shell命令,而不管输出的话,有可以用system函数:
man system这么说:

NAME
       system - execute a shell command
 
SYNOPSIS
       #include <stdlib.h>
 
       int system(const char *command);
 
DESCRIPTION
       system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed.  During execution of the
       command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.

最后修改时间: 2009年09月17日 15:29

本文章发表于: 2008年01月03日 17:32 | 所属分类:编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

2 个评论 关于: “C中调用shell命令的方法 popen演示”

  1. eexpress 在 2008年01月03日 20:21 说:回复

    应该还可以管道输出的。
    perl是这样。试试。
    sub xclip {
    open(XCLIP, “|/usr/bin/xclip”) or warn(”No xclip – use .p\n”),
    return;
    print XCLIP $_[0];
    close XCLIP;
    }

  2. bones7456 在 2008年01月06日 21:32 说:回复

    perl的不懂哦~

发表评论