![]() |
Helloやアメリカ合衆国へようこそ! UNIXおよびLinuxフォーラム!訪問し、当社のグローバルコミュニティに参加いただきありがとうございます。
|
|
Googleのunix.com
|
|||||||
| UNIXのダミー質問と回答のため もしUNIXやLinuxについての質問があれば、ここに投稿してください。すべてのUNIXおよびLinux初心者歓迎! |
その他のUNIXおよびLinuxフォーラムトピックは参考にすること
|
||||
| スレッド | スレッドスターター | フォーラム | 返信 | 最後の投稿 |
| プログラムが別のプログラムの実行をトレースする | jiten_hegde | 高レベルのプログラミング | 3 | 2008年8月19日 05:26午前 |
| C + +の方法( ) & STDINと他のプログラムにはstdout ( )とフォークのパイプを使用するように | vvaidyan | 高レベルのプログラミング | 2 | 2008年5月16日 07:30午後 |
| どのようにパイプ( STDINハンドル)のコンテンツの後に書かれている別のプログラムをクリアするか? | vvaidyan | 高レベルのプログラミング | 10 | 2008年5月15日 07:08午後 |
| どのように別のプログラム(プログラムは、 - > STDINハンドルへの書き込みに[ STDINハンドル]プログラムイ) | vvaidyan | 高レベルのプログラミング | 1 | 2008年4月30日 01:44午後 |
| どうすればprocess_poolプログラムを書くことができますか? | 打つ | 高レベルのプログラミング | 4 | 2002年6月17日 03:36午前 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 | スレッドを評価 | 表示モード |
|
|
|
||||
|
どのように別のプログラム(プログラムは、 - > STDINハンドルへの書き込みに[ STDINハンドル]プログラムイ)
やあ、
プログラムA :パイプを使用しています( ) 私PROGAM Bの標準出力を読むことができる午前( stdoutのシステムを通じてプログラム( )コマンド)になったのを使用する場合: *子供 - > dup2 ( fd [ 1 ] 、 STDOUT_FILENO ) ; - > execl ( " /パス/プログラムB "を、 "プログラムB "を、はNULL ) ; *親 - >文字の行[ 100 ] ; - > ( fd [ 0 ] 、ライン) 100を読む; 質問: --------- どのようにプログラムSTDINハンドルをAからBのプログラムを書くことですか? *私は別のパイプを使用する必要がありますか? *どのように私はBプログラムでSTDINハンドルを読むか? cinを使用するか? 事前のおかげで、 ヴィヴェック |
|
||||
|
/*
*ここにどのようにそれができるの... *を使用してpopen ( ) * #含まれ<sys/types.h> #含まれ<fcntl.h> #含まれ<stdio.h> #含まれ<stdlib.h> #含まれ<unistd.h> 読ま0定義# 1書き込みを定義# pid_t popen2 (定数文字*コマンド、 INTは* infp 、 INTは* outfp ) ( INTはp_stdin [ 2 ] 、 p_stdout [ 2 ] ; pid_t pidを; 場合(パイプ( p_stdin ) ! \u003d 0 | |パイプ( p_stdout ) ! \u003d 0 ) リターン-1 ; フォーク\u003d pidを( ) ; ( pidを< 0 ) pidを返す; 他の場合( pidを\u003d\u003d 0 ) ( 近い( p_stdin [書き込み] ) ; dup2 ( p_stdin [共同] 、読まれる) ; 近い( p_stdout [共同] ) ; dup2 ( p_stdout [書き込み] 、書き込み) ; ( " / bin / shに" execl 、 " shに" 、 " - c "は、コマンド、はNULL ) ; perror ( " execl " ) ; 出口( 1 ) ; ) ( infp \u003d\u003d NULLの場合) 近い( p_stdin [書き込み] ) ; その他の * infp \u003d p_stdin [ ]書き込み; ( outfp \u003d\u003d NULLの場合) 近い( p_stdout [共同] ) ; その他の * outfp \u003d p_stdout [共同] ; pidを返す; ) / * *現在のメインに... STDINハンドルinfpのファイル記述子( )になる * outfpは、標準出力(ファイルディスクリプタからになります) *楽しもう * / INTは メイン( INTはargc 、文字** argv ) ( INTはinfp 、 outfp ; 文字buf [ 128 ] ; ( popen2 ( "あなたのプログラム- B "を、 & infp 、 & outfp ) < \u003d 0 ) ( printf ( " - B \ Ñ " )プログラムを実行することはできません。 出口( 1 ) ; ) memset ( bufは0x0 、 sizeof ( buf ) ) ; ( infp 、 " Ž \ Ñ " 、 2 )を書く; ( infp 、 "エ\ Ñ " 、 2 )を書く; ( infp 、 "書く\ Ñ " 、 2 ) ; ( infp 、の" C \ Ñ " 、 2 )を書く; 近い( infp ) ; ( outfp 、 buf 、 128 )を読む; \u003d ' % ' \ Ñ "秒printf ( " buf 、 buf ) ; 戻り0 ; ) |
|
||||
|
引用:
コード:
if (popen2("your-program-B", &infp, &outfp) <= 0)
{
printf("Unable to exec your-program-B\n");
exit(1);
}
memset (buf, 0x0, sizeof(buf));
/*
* writing to stdin here
*/
write(infp, "Z\n", 2);
write(infp, "D\n", 2);
write(infp, "A\n", 2);
write(infp, "C\n", 2);
close(infp);
/*
* reading stdout here
*/
read(outfp, buf, 128);
printf("buf = '%s'\n", buf);
|