Hi Holger,
OK, I made a new VM with your PR after I reviewed it. Good news? It works!!!�� If you want to check OSSubprocess, I am using now the primCreatePipe from OSProcess because that would answer me directly the SQFiles of the pipe. Originally (before ending up doing that), I was trying to make the pipes myself via FFI ( pipe() ) but I came to the problem we discussed earlier (remember the #name:attachTo:writable:).
So now I can go back to my original solution. The code is in #makePipeWithReadBlocking: and now it looks like this:
| pipePointer returnValue fileDescriptors pipe fileIDsArray fileDescriptor1 fileDescriptor2 |
pipePointer := ExternalAddress allocate: 8.
[
returnValue := self primitivePipe: pipePointer.
(returnValue = -1) ifTrue: [ self perror: 'pipe()' ].��
fileIDsArray := Array new: 2.
fileDescriptor1 := pipePointer nbUInt32AtOffset: 0.
fileDescriptor2 := pipePointer nbUInt32AtOffset: 4.
fileIDsArray at: 1 put: (self primitiveFileOpenUseFileDescriptor: fileDescriptor1 writeFlag: false).
fileIDsArray at: 2 put: (self primitiveFileOpenUseFileDescriptor: fileDescriptor2 writeFlag: true).
pipe := OSSPipe newWith: fileIDsArray readBlocking: aBoolean.��
] ensure:[
pipePointer free.
].
^ pipe
I just run all OSSubprocess tests and they all worked! (tested in Pharo 5.0).��
I guess I will commit this on the dev branch and hopefully when this is integrated into the VM I can merge that for my next OSSubprocess release.
Thank you very much Holger