读取codeign -dvvvv从终端输出到cpp程序

时间:2016-08-05 07:14:05

标签: c++ macos codesign

我正在通过popen执行" codesign -dvv" 命令。这会打开子进程的bidriectional管道(codeign -dvvvv的子进程)。当我尝试从管道读取命令的输出时,它读取0个字节。以下是代码:

Dim myDR As OleDb.OleDbDataReader
MyCmd = New OleDb.OleDbCommand("SELECT * FROM Netzwerkverwaltung WHERE ID=?", MyCon)
MyCmd.Parameters.Add(New System.Data.OleDb.OleDbParameter("ID", System.Data.OleDb.OleDbType.Integer))
MyCmd.Parameters("ID").Value = Request("ID")

If MyCon.State = ConnectionState.Closed Then
    MyCon.Open()
End If
myDR = MyCmd.ExecuteReader()

在输出中,我可以看到codesign命令的输出,但我的程序无法读取它。

1 个答案:

答案 0 :(得分:1)

代码签名输出在stderr上,而不是在stdout上。 popen只访问stdout。

您应该在命令中将stderr重定向到stdout,例如:

snprintf(command, MAX_BUF_SIZE,"codesign -dvv %s 2>&1", file);

希望这可以让你阅读输出。