Read Access Violation在proc LUA打开文件时出现
我用SAS编程并希望使用LUA来编写XML文件
所以首先,我启动'proc LUA'并传递文件名 ;
%let file = \\ourCompany\ourTeam\ourProject\myFile.xml;
proc lua restart;
submit;
local file_name = sas.symget("file")
print (file_name)
--接下来,我打开文件进行写入,写入一些内容然后关闭文件
print('DEBUG: before opening')
file = io.open (file_name, "w")
print('DEBUG: after opening, before writing')
file:write ("<test/>", "\n")
print('DEBUG: after writing, before closing')
file:close()
print('DEBUG: after closing')
-- 当然还要停止LUA
endsubmit;
run;
/*这很有效:文件以这个内容创建
<test/>
但是日志显示以下消息
``` 注意:Lua初始化。 \our Company\ourTeam\ourProject\myFile.xml DEBUG:打开之前 DEBUG:打开后,在写入之前 DEBUG:写入后,在关闭之前
错误:遇到异常。 请联系技术支持并向他们提供以下追溯信息:
SAS任务名称为[LUA(2)] 错误:读取访问冲突LUA(2) 异常发生于(89400CB7) 任务回溯 地址帧(DBGHELP API Version 4.0 rev 5) 00007FFD89400CB7 000000000862F1F0 ntdll:RtlAllocateHeap+0x27 00000000084D2ACD 000000000862F1F8 sasplua:tkvercn1+0x81A8D 00000000084D0E7F 000000000862F250 sasplua:tkvercn1+0x7FE3F 00000000084D0D17 000000000862F280 sasplua:tkvercn1+0x7FCD7 00000000084CF711 000000000862F2B0 sasplua:tkvercn1+0x7E6D1 0000000008462609 000000000862F300 sasplua:tkvercn1+0x115C9 0000000008474A7D 000000000862F410 sasplua:tkvercn1+0x23A3D 0000000008485C7E 000000000862F530 sasplua:tkvercn1+0x34C3E 0000000008474349 000000000862F570 sasplua:tkvercn1+0x23309 00000000084788A4 000000000862F8D0 sasplua:tkvercn1+0x27864 0000000008478A9D 000000000862F940 sasplua:tkvercn1+0x27A5D 0000000008469746 000000000862F9A0 sasplua:tkvercn1+0x18706 00000000084523A2 000000000862F9F0 sasplua:tkvercn1+0x1362 000000000845224E 000000000862FB10 sasplua:tkvercn1+0x120E 00000000084529F4 000000000862FBF0 sasplua:tkvercn1+0x19B4 0000000001A489DB 000000000862FBF8 sashost:Main+0x10EBB 0000000001A4E61D 000000000862FF50 sashost:Main+0x16AFD 00007FFD875613F2 000000000862FF58 KERNEL32:BaseThreadInitThunk+0x22 00007FFD893E54F4 000000000862FFD0 ntdll:RtlUserThreadStart+0x34\n 注意:由于错误,SAS系统停止处理此步骤。\n\n```
我不知道这是一个纯LUA问题,还是与SAS中的'proc LUA'有关。由于最后一条DEBUG消息未打印,因此该问题似乎在关闭文件时发生。 我尝试了几个不同的'open'命令选项,并尝试了移除'io.write',但是这并没有帮助。
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你的代码对我来说很好(在
SYSVLONG=9.04.01M3P062415,SYSSCP=LIN X64上)。也许可以尝试以下稍微不同的做法?
%let file = %sysfunc(pathname(work))/new.xml; proc lua restart; submit; local file_name = sas.symget("file") print (file_name) file = io.open (file_name, "w") io.output(file) -- sets default output io.write ("<test>", "\n") io.write ("write to file", "\n") io.write ("</test>", "\n") io.close(file) endsubmit; run;