Я использую pyxterm.js для создания приложения веб-терминала, и в настоящее время я сталкиваюсь с проблемой, как получить текущий путь (например, os.getcwd) для созданного pty fd.
Script:
app = Flask(__name__)
app.config["fd"] = None
app.config["child_pid"] = None
socketio = SocketIO(app)
def read_and_forward_pty_output():
max_read_bytes = 1024 * 20
while True:
socketio.sleep(0.01)
if app.config["fd"]:
timeout_sec = 0
(data_ready, _, _) = select.select([app.config["fd"]], [], [], timeout_sec)
if data_ready:
output = os.read(app.config["fd"], max_read_bytes).decode("utf8", "ignore")
@app.route("/")
def index():
return render_template("index.html")
@socketio.on("pty-input", namespace="/pty")
def pty_input(data):
if app.config["fd"]:
os.write(app.config["fd"], data["input"].encode())
@socketio.on("connect", namespace="/pty")
def connect():
(child_pid, fd) = pty.fork()
if child_pid == 0:
subprocess.run(app.config["cmd"])
else:
app.config["fd"] = fd
app.config["child_pid"] = child_pid
# ......
socketio.start_background_task(target=read_and_forward_pty_output)
print("task started")
def main():
# ......
socketio.run(app)
if __name__ == "__main__":
main()
Команда отправляется со стороны сети, и, скажем, начальный путь /User/Example/App
, а затем последовательность ввода со стороны сети:
some other commands
cd ..
some other commands
cd ..
some other commands
И теперь текущий путь должен быть на /User
, но как я могу получить этот путь, используя код?
Любой совет будет оценен, спасибо:)