Mon application s'est plantée avec une erreur Terminé en raison du signal 13 .
Je suis en train de créer un tuyau d'entrée et sur cette ligne l'application s'est plantée avec la raison ci-dessus.
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()
}
Je suis Ce lien pour mettre en œuvre cette mesure.
Maintenant, le tutoriel ci-dessus fonctionne bien dans un projet régulier.
Mais je crée le cadre de cette démo et l'utilise dans un autre code d'application.
À ce moment-là, l'application s'est écrasée sur la ligne.
dup2(inputPipe.fileHandleForWriting.fileDescriptor, STDERR_FILENO)
C'est la méthode ci-dessous dans la mesure où je récupère tous les journaux à partir du tuyau.
@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)
}
}