さんの指摘が当たっているようなので、質問者さんの要望が対象Cプログラムを変更しない前提ならば、C言語のインタプリタを作るか、デバッガを作るか、あたりが解決策でしょうか。いずれにしろその方向では簡単には実現しないですね。票1OSの機能なので、言語とは直接は関係ありません。子プロセスを起動できる言語(と言うか処理系(コンパイラ/インタプリタ/コマンド等))ならば、大概は備えているものでしょう。C言語ならばこんな記事があります。UNIXの子プロセスの標準入力にパイプでデータを渡したいやりたいことUNIXで子プロセスを起動して任意のコマンドをexecで実行したい。そのコマンドの標準入力に対してパイプでデータを渡したい。子プロセスを起動してcatを引数なしで呼ぶ。catは引数なしなので標準入力を待つ。World."をパイプで流す。catを実行したのと同じ。子プロセスをexecした後に、標準入出力を親側で操作するサンプル書いたので保存。親プロセス・子プロセス間通信Pythonだとこんな記事が。プロセスを生成して連携する別のコマンドと相互にやり取りする上述した全てのサンプルは制限のあるプロセス間のやり取りを前提としていました。メソッドは全ての出力を読み込み、値を返す前に子プロセスの終了を待ちます。インスタンスが使用する個々のパイプハンドラに読み書きすることもできます。何回かに分けて入力を送り,その都度出力を得る,といったやり取りは,下記のようにして実現される.参考にしたのはこの記事.一度にデータの入出力を終えるcommunicate()では再現できないため,大きなデータのやり取りが必要になると,デッドロックが発生するリスクがある.なお、こちらの承認済み回答はOSに関係なくブロックせずにストリームを読み取るための信頼できる方法があると書いています。以下は回答のコピーで検証はしていません。lineまたコメントが多数ついているので、色々と注意事項がありそうです。上記記事の回答にもありますが、Unix系のシステムだと、PIPEをノンブロッキングモードに設定できるようです。os.set_blockingでは、まさにそれが言っていることを行います。False)で設定できるようです。するとp.stdout.readline()がノンブロッキングモードになるので、その対策も必要です。blocking)指定されたファイル記述子のブロッキングモードを設定します。フラグを設定し、そうでない場合はクリアします。