Мое приложение получило cra sh с ошибкой Завершено из-за сигнала 13 .
Я создаю входной канал, и в этой строке приложение получило cra sh по вышеуказанной причине.
public func openConsolePipe() {
inputPipe = Pipe()
outputPipe = Pipe()
let pipeReadHandle = inputPipe.fileHandleForReading
dup2(STDOUT_FILENO, outputPipe.fileHandleForWriting.fileDescriptor)
dup2(STDERR_FILENO, outputPipe.fileHandleForWriting.fileDescriptor)
dup2(inputPipe.fileHandleForWriting.fileDescriptor, STDOUT_FILENO)
dup2(inputPipe.fileHandleForWriting.fileDescriptor, STDERR_FILENO)
NotificationCenter.default.addObserver(self, selector: #selector(self.handlePipeNotification), name: FileHandle.readCompletionNotification, object: pipeReadHandle)
pipeReadHandle.readInBackgroundAndNotify()
}
Я следую Эту ссылку для реализации этого.
Теперь над учебником работает нормально в обычном проекте.
Но я создаю фреймворк из это демо и используйте другой код приложения.
В то время приложение получило sh на линии.
dup2 (inputPipe.fileHandleForWriting.fileDescriptor, STDERR_FILENO)
Этот метод ниже, в котором я получаю все журналы из канала.
@objc func handlePipeNotification(notification: Notification)
{
inputPipe.fileHandleForReading.readInBackgroundAndNotify()
if let data = notification.userInfo![NSFileHandleNotificationDataItem] as? Data,
let str = String(data: data, encoding: String.Encoding.ascii) {
outputPipe.fileHandleForWriting.write(data)
}
}