我正在通过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命令的输出,但我的程序无法读取它。
答案 0 :(得分:1)
代码签名输出在stderr上,而不是在stdout上。 popen只访问stdout。
您应该在命令中将stderr重定向到stdout,例如:
snprintf(command, MAX_BUF_SIZE,"codesign -dvv %s 2>&1", file);
希望这可以让你阅读输出。