Czy można uzyskać dostęp do oryginalnego wskaźnika argv
z poziomu Haskell main
?Uzyskaj dostęp do oryginalnego wskaźnika argv z Haskell
Moim przypadkiem użycia jest to, że chciałbym usunąć parametry wiersza polecenia po uruchomieniu aplikacji, aby nie można było ich odczytać przez ps
. Jest na to kilka sposobów, ale wszystkie wymagają manipulowania oryginalnym argv
.
jestem w stanie to zrobić, jeśli piszę C opakowanie i zadzwonić hs_init
stamtąd (potem mucking z argv
ala here), ale byłoby ładniej to zrobić od Haskell.
Dzięki!
PS - to pytanie różni się od duplicate, ponieważ duplikat używa numeru prctl
, który, o ile wiem, pozwala tylko zmienić nazwę procesu. Co więcej, duplikat chce "ustawić" argv[0]
, podczas gdy ja próbuję uzyskać zmienne odniesienie do oryginalnego argv
używanego do wywoływania programu.
Moje początkowe przypuszczenie jest takie, że nie jest to możliwe z Haskell, ponieważ nie ma funkcji 'setArgs', a' getArgs' zwraca niezmienną listę. – bheklilr
Dzięki. Przelałem kod FFI i doszedłem do tego samego wniosku, ale ponieważ jestem stosunkowo nowy, nie wiedziałem, czy istnieje inny sposób. – aaronlevin
To jest coś, o czym nawet nie wiedziałem, że było to możliwe 5 minut temu, więc może być jakiś sposób, ale jeśli jest jakiś sposób, obejmie on dziwną funkcję narożną w wewnętrznej bibliotece. Zajrzyj do bibliotek specyficznych dla GHC, ponieważ prawdopodobnie zależy to od używanego kompilatora. – bheklilr