Cプログラム内で他のプログラムを実行しようとしています。私の最初の試みはポペンでした。から読み込もうとするとpipe
、1バイトの応答しか得られず、bufには何も返されません。この背後にある理由についてはよくわかりません。
ポペンの例:
#include<stdio.h>
#include<unistd.h>
int main(int argc, char* argv[])
{
FILE* pipe;
if ((pipe=(FILE*)popen("./test.php","r"))==NULL)
printf("this is not working\n");
char buf[1024] = {'\0'};
int fd=fileno(pipe);
int bytes = read(fd, buf, 1024);
printf("bytes read %d\n", bytes);
printf("The program: %s\n", buf);
if(pclose(pipe)<0)
printf("not working\n");
return 0;
}
phpの例
#!/usr/bin/php
<?php
echo "THIS IS A TEST THAT WORKED\n";
?>
出力:
bytes read 1
The program:
lsの出力:
ls -l test.php
-rwxr-xr-x+ 1 tpar44 user 62 Nov 10 14:42 test.php
これでどんな助けでも大歓迎です!ありがとう!