execute bash?

Puming via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 9 17:47:28 PDT 2016


On Saturday, 9 April 2016 at 08:56:17 UTC, wobbles wrote:
> On Friday, 8 April 2016 at 23:06:06 UTC, Puming wrote:
>> On Friday, 8 April 2016 at 18:23:32 UTC, wobbles wrote:
>>> On Friday, 8 April 2016 at 16:07:13 UTC, Adam D. Ruppe wrote:
>>>> On Friday, 8 April 2016 at 15:20:09 UTC, Puming wrote:
>>>>> I tried with signal, but didn't catch SIGTTOU, it seems 
>>>>> that spawnProcess with `bash -i -c` will signal with 
>>>>> SIGTTIN.
>>>>
>>>> Oh, surely because it wants to be interactive and is thus 
>>>> waiting for user input from the terminal..
>>>>
>>>> You might need to rig up a pseudo terminal that the bash can 
>>>> talk to. That's getting to be a pain though.
>>>
>>> You could run it through dexpect to get the effect of a 
>>> pseudo terminal.
>>>
>>> https://github.com/grogancolin/dexpect
>>
>> Looked in the code, it is exacly what I need! Thanks.
>>
>> Also it has spawnInPty
>
> Cool. Any questions on using it let me know. I'm all for a bit 
> of feedback also!

I tried dexpect, now it works for the bash emulation!

But there are still some issues:

1. Spawn's data is a string, so it stores ALL data, but Expect 
class does not have a clear() method, so the data piles up and 
takes memory.

2. There seems to be a visible lag for each send->read cycle. I 
haven't look in the details to find where, but it feels not as 
smooth as ssh does.

3. when hiting 'vim a.file' on the command, things go messy. Have 
you got these interactive commands work in dexpect?

My wish list for the Expect class ( or design a separate class, 
like BashProxy ):

1. Fully proxy for a bash shell.
2. Result data are separated for each command. So I can easily 
search for hitorical sent commands or results.

But for now it works fine for my needs.
I'll try to improve it when I get major parts of my repl lib done.





More information about the Digitalmars-d-learn mailing list